home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / SwingUtilities.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  19.9 KB  |  1,096 lines

  1. package javax.swing;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.AWTEvent;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Dialog;
  8. import java.awt.FontMetrics;
  9. import java.awt.Frame;
  10. import java.awt.Graphics;
  11. import java.awt.Point;
  12. import java.awt.Rectangle;
  13. import java.awt.Window;
  14. import java.awt.event.InputEvent;
  15. import java.awt.event.MouseEvent;
  16. import java.lang.reflect.InvocationTargetException;
  17. import java.lang.reflect.Method;
  18. import java.util.Hashtable;
  19. import java.util.Vector;
  20. import javax.accessibility.Accessible;
  21. import javax.accessibility.AccessibleComponent;
  22. import javax.accessibility.AccessibleContext;
  23. import javax.accessibility.AccessibleSelection;
  24. import javax.accessibility.AccessibleState;
  25. import javax.accessibility.AccessibleStateSet;
  26. import javax.swing.text.View;
  27.  
  28. public class SwingUtilities implements SwingConstants {
  29.    private static boolean canAccessEventQueue = false;
  30.    private static boolean eventQueueTested = false;
  31.    static boolean is1dot2 = true;
  32.    private static Class eventDispatchThreadClass;
  33.    private static final Object sharedOwnerFrameKey;
  34.    private static final Object dialogsKey;
  35.    static Hashtable appContextTable;
  36.    // $FF: synthetic field
  37.    static Class class$java$lang$Class;
  38.  
  39.    static {
  40.       try {
  41.          Method var0 = (class$java$lang$Class != null ? class$java$lang$Class : (class$java$lang$Class = class$("java.lang.Class"))).getMethod("getProtectionDomain", (Class[])null);
  42.          is1dot2 = var0 != null;
  43.       } catch (NoSuchMethodException var1) {
  44.          is1dot2 = false;
  45.       }
  46.  
  47.       if (is1dot2) {
  48.          System.err.println("warning: running 1.1 version of SwingUtilities");
  49.       }
  50.  
  51.       eventDispatchThreadClass = null;
  52.       sharedOwnerFrameKey = new StringBuffer("SwingUtilities.sharedOwnerFrame");
  53.       dialogsKey = new StringBuffer("SwingUtilities.dialogs");
  54.       appContextTable = new Hashtable(2);
  55.    }
  56.  
  57.    private SwingUtilities() {
  58.       throw new Error("SwingUtilities is just a container for static methods");
  59.    }
  60.  
  61.    static Object appContextGet(Object var0) {
  62.       return appContextTable.get(var0);
  63.    }
  64.  
  65.    static void appContextPut(Object var0, Object var1) {
  66.       appContextTable.put(var0, var1);
  67.    }
  68.  
  69.    static void appContextRemove(Object var0) {
  70.       appContextTable.remove(var0);
  71.    }
  72.  
  73.    // $FF: synthetic method
  74.    static Class class$(String var0) {
  75.       try {
  76.          return Class.forName(var0);
  77.       } catch (ClassNotFoundException var2) {
  78.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  79.       }
  80.    }
  81.  
  82.    public static Rectangle[] computeDifference(Rectangle var0, Rectangle var1) {
  83.       if (var1 != null && var0.intersects(var1) && !isRectangleContainingRectangle(var1, var0)) {
  84.          Rectangle var2 = new Rectangle();
  85.          Rectangle var3 = null;
  86.          Rectangle var4 = null;
  87.          Rectangle var5 = null;
  88.          Rectangle var6 = null;
  89.          int var8 = 0;
  90.          if (isRectangleContainingRectangle(var0, var1)) {
  91.             var2.x = var0.x;
  92.             var2.y = var0.y;
  93.             var2.width = var1.x - var0.x;
  94.             var2.height = var0.height;
  95.             if (var2.width > 0 && var2.height > 0) {
  96.                var3 = new Rectangle(var2);
  97.                ++var8;
  98.             }
  99.  
  100.             var2.x = var1.x;
  101.             var2.y = var0.y;
  102.             var2.width = var1.width;
  103.             var2.height = var1.y - var0.y;
  104.             if (var2.width > 0 && var2.height > 0) {
  105.                var4 = new Rectangle(var2);
  106.                ++var8;
  107.             }
  108.  
  109.             var2.x = var1.x;
  110.             var2.y = var1.y + var1.height;
  111.             var2.width = var1.width;
  112.             var2.height = var0.y + var0.height - (var1.y + var1.height);
  113.             if (var2.width > 0 && var2.height > 0) {
  114.                var5 = new Rectangle(var2);
  115.                ++var8;
  116.             }
  117.  
  118.             var2.x = var1.x + var1.width;
  119.             var2.y = var0.y;
  120.             var2.width = var0.x + var0.width - (var1.x + var1.width);
  121.             var2.height = var0.height;
  122.             if (var2.width > 0 && var2.height > 0) {
  123.                var6 = new Rectangle(var2);
  124.                ++var8;
  125.             }
  126.          } else if (var1.x <= var0.x && var1.y <= var0.y) {
  127.             if (var1.x + var1.width > var0.x + var0.width) {
  128.                var2.x = var0.x;
  129.                var2.y = var1.y + var1.height;
  130.                var2.width = var0.width;
  131.                var2.height = var0.y + var0.height - (var1.y + var1.height);
  132.                if (var2.width > 0 && var2.height > 0) {
  133.                   var3 = var2;
  134.                   ++var8;
  135.                }
  136.             } else if (var1.y + var1.height > var0.y + var0.height) {
  137.                var2.setBounds(var1.x + var1.width, var0.y, var0.x + var0.width - (var1.x + var1.width), var0.height);
  138.                if (var2.width > 0 && var2.height > 0) {
  139.                   var3 = var2;
  140.                   ++var8;
  141.                }
  142.             } else {
  143.                var2.setBounds(var1.x + var1.width, var0.y, var0.x + var0.width - (var1.x + var1.width), var1.y + var1.height - var0.y);
  144.                if (var2.width > 0 && var2.height > 0) {
  145.                   var3 = new Rectangle(var2);
  146.                   ++var8;
  147.                }
  148.  
  149.                var2.setBounds(var0.x, var1.y + var1.height, var0.width, var0.y + var0.height - (var1.y + var1.height));
  150.                if (var2.width > 0 && var2.height > 0) {
  151.                   var4 = new Rectangle(var2);
  152.                   ++var8;
  153.                }
  154.             }
  155.          } else if (var1.x <= var0.x && var1.y + var1.height >= var0.y + var0.height) {
  156.             if (var1.x + var1.width > var0.x + var0.width) {
  157.                var2.setBounds(var0.x, var0.y, var0.width, var1.y - var0.y);
  158.                if (var2.width > 0 && var2.height > 0) {
  159.                   var3 = var2;
  160.                   ++var8;
  161.                }
  162.             } else {
  163.                var2.setBounds(var0.x, var0.y, var0.width, var1.y - var0.y);
  164.                if (var2.width > 0 && var2.height > 0) {
  165.                   var3 = new Rectangle(var2);
  166.                   ++var8;
  167.                }
  168.  
  169.                var2.setBounds(var1.x + var1.width, var1.y, var0.x + var0.width - (var1.x + var1.width), var0.y + var0.height - var1.y);
  170.                if (var2.width > 0 && var2.height > 0) {
  171.                   var4 = new Rectangle(var2);
  172.                   ++var8;
  173.                }
  174.             }
  175.          } else if (var1.x <= var0.x) {
  176.             if (var1.x + var1.width >= var0.x + var0.width) {
  177.                var2.setBounds(var0.x, var0.y, var0.width, var1.y - var0.y);
  178.                if (var2.width > 0 && var2.height > 0) {
  179.                   var3 = new Rectangle(var2);
  180.                   ++var8;
  181.                }
  182.  
  183.                var2.setBounds(var0.x, var1.y + var1.height, var0.width, var0.y + var0.height - (var1.y + var1.height));
  184.                if (var2.width > 0 && var2.height > 0) {
  185.                   var4 = new Rectangle(var2);
  186.                   ++var8;
  187.                }
  188.             } else {
  189.                var2.setBounds(var0.x, var0.y, var0.width, var1.y - var0.y);
  190.                if (var2.width > 0 && var2.height > 0) {
  191.                   var3 = new Rectangle(var2);
  192.                   ++var8;
  193.                }
  194.  
  195.                var2.setBounds(var1.x + var1.width, var1.y, var0.x + var0.width - (var1.x + var1.width), var1.height);
  196.                if (var2.width > 0 && var2.height > 0) {
  197.                   var4 = new Rectangle(var2);
  198.                   ++var8;
  199.                }
  200.  
  201.                var2.setBounds(var0.x, var1.y + var1.height, var0.width, var0.y + var0.height - (var1.y + var1.height));
  202.                if (var2.width > 0 && var2.height > 0) {
  203.                   var5 = new Rectangle(var2);
  204.                   ++var8;
  205.                }
  206.             }
  207.          } else if (var1.x <= var0.x + var0.width && var1.x + var1.width > var0.x + var0.width) {
  208.             if (var1.y <= var0.y && var1.y + var1.height > var0.y + var0.height) {
  209.                var2.setBounds(var0.x, var0.y, var1.x - var0.x, var0.height);
  210.                if (var2.width > 0 && var2.height > 0) {
  211.                   var3 = var2;
  212.                   ++var8;
  213.                }
  214.             } else if (var1.y <= var0.y) {
  215.                var2.setBounds(var0.x, var0.y, var1.x - var0.x, var1.y + var1.height - var0.y);
  216.                if (var2.width > 0 && var2.height > 0) {
  217.                   var3 = new Rectangle(var2);
  218.                   ++var8;
  219.                }
  220.  
  221.                var2.setBounds(var0.x, var1.y + var1.height, var0.width, var0.y + var0.height - (var1.y + var1.height));
  222.                if (var2.width > 0 && var2.height > 0) {
  223.                   var4 = new Rectangle(var2);
  224.                   ++var8;
  225.                }
  226.             } else if (var1.y + var1.height > var0.y + var0.height) {
  227.                var2.setBounds(var0.x, var0.y, var0.width, var1.y - var0.y);
  228.                if (var2.width > 0 && var2.height > 0) {
  229.                   var3 = new Rectangle(var2);
  230.                   ++var8;
  231.                }
  232.  
  233.                var2.setBounds(var0.x, var1.y, var1.x - var0.x, var0.y + var0.height - var1.y);
  234.                if (var2.width > 0 && var2.height > 0) {
  235.                   var4 = new Rectangle(var2);
  236.                   ++var8;
  237.                }
  238.             } else {
  239.                var2.setBounds(var0.x, var0.y, var0.width, var1.y - var0.y);
  240.                if (var2.width > 0 && var2.height > 0) {
  241.                   var3 = new Rectangle(var2);
  242.                   ++var8;
  243.                }
  244.  
  245.                var2.setBounds(var0.x, var1.y, var1.x - var0.x, var1.height);
  246.                if (var2.width > 0 && var2.height > 0) {
  247.                   var4 = new Rectangle(var2);
  248.                   ++var8;
  249.                }
  250.  
  251.                var2.setBounds(var0.x, var1.y + var1.height, var0.width, var0.y + var0.height - (var1.y + var1.height));
  252.                if (var2.width > 0 && var2.height > 0) {
  253.                   var5 = new Rectangle(var2);
  254.                   ++var8;
  255.                }
  256.             }
  257.          } else if (var1.x >= var0.x && var1.x + var1.width <= var0.x + var0.width) {
  258.             if (var1.y <= var0.y && var1.y + var1.height > var0.y + var0.height) {
  259.                var2.setBounds(var0.x, var0.y, var1.x - var0.x, var0.height);
  260.                if (var2.width > 0 && var2.height > 0) {
  261.                   var3 = new Rectangle(var2);
  262.                   ++var8;
  263.                }
  264.  
  265.                var2.setBounds(var1.x + var1.width, var0.y, var0.x + var0.width - (var1.x + var1.width), var0.height);
  266.                if (var2.width > 0 && var2.height > 0) {
  267.                   var4 = new Rectangle(var2);
  268.                   ++var8;
  269.                }
  270.             } else if (var1.y <= var0.y) {
  271.                var2.setBounds(var0.x, var0.y, var1.x - var0.x, var0.height);
  272.                if (var2.width > 0 && var2.height > 0) {
  273.                   var3 = new Rectangle(var2);
  274.                   ++var8;
  275.                }
  276.  
  277.                var2.setBounds(var1.x, var1.y + var1.height, var1.width, var0.y + var0.height - (var1.y + var1.height));
  278.                if (var2.width > 0 && var2.height > 0) {
  279.                   var4 = new Rectangle(var2);
  280.                   ++var8;
  281.                }
  282.  
  283.                var2.setBounds(var1.x + var1.width, var0.y, var0.x + var0.width - (var1.x + var1.width), var0.height);
  284.                if (var2.width > 0 && var2.height > 0) {
  285.                   var5 = new Rectangle(var2);
  286.                   ++var8;
  287.                }
  288.             } else {
  289.                var2.setBounds(var0.x, var0.y, var1.x - var0.x, var0.height);
  290.                if (var2.width > 0 && var2.height > 0) {
  291.                   var3 = new Rectangle(var2);
  292.                   ++var8;
  293.                }
  294.  
  295.                var2.setBounds(var1.x, var0.y, var1.width, var1.y - var0.y);
  296.                if (var2.width > 0 && var2.height > 0) {
  297.                   var4 = new Rectangle(var2);
  298.                   ++var8;
  299.                }
  300.  
  301.                var2.setBounds(var1.x + var1.width, var0.y, var0.x + var0.width - (var1.x + var1.width), var0.height);
  302.                if (var2.width > 0 && var2.height > 0) {
  303.                   var5 = new Rectangle(var2);
  304.                   ++var8;
  305.                }
  306.             }
  307.          }
  308.  
  309.          Rectangle[] var7 = new Rectangle[var8];
  310.          var8 = 0;
  311.          if (var3 != null) {
  312.             var7[var8++] = var3;
  313.          }
  314.  
  315.          if (var4 != null) {
  316.             var7[var8++] = var4;
  317.          }
  318.  
  319.          if (var5 != null) {
  320.             var7[var8++] = var5;
  321.          }
  322.  
  323.          if (var6 != null) {
  324.             var7[var8++] = var6;
  325.          }
  326.  
  327.          return var7;
  328.       } else {
  329.          return new Rectangle[0];
  330.       }
  331.    }
  332.  
  333.    public static Rectangle computeIntersection(int var0, int var1, int var2, int var3, Rectangle var4) {
  334.       int var5 = var0 > var4.x ? var0 : var4.x;
  335.       int var6 = var0 + var2 < var4.x + var4.width ? var0 + var2 : var4.x + var4.width;
  336.       int var7 = var1 > var4.y ? var1 : var4.y;
  337.       int var8 = var1 + var3 < var4.y + var4.height ? var1 + var3 : var4.y + var4.height;
  338.       var4.x = var5;
  339.       var4.y = var7;
  340.       var4.width = var6 - var5;
  341.       var4.height = var8 - var7;
  342.       if (var4.width < 0 || var4.height < 0) {
  343.          var4.x = var4.y = var4.width = var4.height = 0;
  344.       }
  345.  
  346.       return var4;
  347.    }
  348.  
  349.    public static int computeStringWidth(FontMetrics var0, String var1) {
  350.       if (is1dot2) {
  351.          return var0.stringWidth(var1);
  352.       } else {
  353.          int[] var2 = var0.getWidths();
  354.          int var5 = 0;
  355.          int var3 = 0;
  356.  
  357.          for(int var4 = var1.length(); var3 < var4; ++var3) {
  358.             char var6 = var1.charAt(var3);
  359.             if (var6 > 255) {
  360.                return var0.stringWidth(var1);
  361.             }
  362.  
  363.             var5 += var2[var6];
  364.          }
  365.  
  366.          return var5;
  367.       }
  368.    }
  369.  
  370.    public static Rectangle computeUnion(int var0, int var1, int var2, int var3, Rectangle var4) {
  371.       int var5 = var0 < var4.x ? var0 : var4.x;
  372.       int var6 = var0 + var2 > var4.x + var4.width ? var0 + var2 : var4.x + var4.width;
  373.       int var7 = var1 < var4.y ? var1 : var4.y;
  374.       int var8 = var1 + var3 > var4.y + var4.height ? var1 + var3 : var4.y + var4.height;
  375.       var4.x = var5;
  376.       var4.y = var7;
  377.       var4.width = var6 - var5;
  378.       var4.height = var8 - var7;
  379.       return var4;
  380.    }
  381.  
  382.    public static MouseEvent convertMouseEvent(Component var0, MouseEvent var1, Component var2) {
  383.       Point var3 = convertPoint(var0, new Point(var1.getX(), var1.getY()), var2);
  384.       Component var4;
  385.       if (var2 != null) {
  386.          var4 = var2;
  387.       } else {
  388.          var4 = var0;
  389.       }
  390.  
  391.       return new MouseEvent(var4, ((AWTEvent)var1).getID(), ((InputEvent)var1).getWhen(), ((InputEvent)var1).getModifiers(), var3.x, var3.y, var1.getClickCount(), var1.isPopupTrigger());
  392.    }
  393.  
  394.    public static Point convertPoint(Component var0, int var1, int var2, Component var3) {
  395.       Point var4 = new Point(var1, var2);
  396.       return convertPoint(var0, var4, var3);
  397.    }
  398.  
  399.    public static Point convertPoint(Component var0, Point var1, Component var2) {
  400.       if (var0 == null && var2 == null) {
  401.          return var1;
  402.       } else {
  403.          if (var0 == null) {
  404.             var0 = getWindowAncestor((Component)var2);
  405.             if (var0 == null) {
  406.                throw new Error("Source component not connected to component tree hierarchy");
  407.             }
  408.          }
  409.  
  410.          Point var3 = new Point(var1);
  411.          convertPointToScreen(var3, (Component)var0);
  412.          if (var2 == null) {
  413.             var2 = getWindowAncestor((Component)var0);
  414.             if (var2 == null) {
  415.                throw new Error("Destination component not connected to component tree hierarchy");
  416.             }
  417.          }
  418.  
  419.          convertPointFromScreen(var3, (Component)var2);
  420.          return var3;
  421.       }
  422.    }
  423.  
  424.    public static void convertPointFromScreen(Point var0, Component var1) {
  425.       while(true) {
  426.          int var3;
  427.          int var4;
  428.          if (var1 instanceof JComponent) {
  429.             var3 = ((JComponent)var1).getX();
  430.             var4 = ((JComponent)var1).getY();
  431.          } else if (var1 instanceof Applet) {
  432.             Point var5 = ((Component)var1).getLocationOnScreen();
  433.             var3 = var5.x;
  434.             var4 = var5.y;
  435.          } else {
  436.             Rectangle var2 = ((Component)var1).getBounds();
  437.             var3 = var2.x;
  438.             var4 = var2.y;
  439.          }
  440.  
  441.          var0.x -= var3;
  442.          var0.y -= var4;
  443.          if (!(var1 instanceof Window) && !(var1 instanceof Applet)) {
  444.             var1 = ((Component)var1).getParent();
  445.             if (var1 != null) {
  446.                continue;
  447.             }
  448.          }
  449.  
  450.          return;
  451.       }
  452.    }
  453.  
  454.    public static void convertPointToScreen(Point var0, Component var1) {
  455.       while(true) {
  456.          int var3;
  457.          int var4;
  458.          if (var1 instanceof JComponent) {
  459.             var3 = ((JComponent)var1).getX();
  460.             var4 = ((JComponent)var1).getY();
  461.          } else if (var1 instanceof Applet) {
  462.             Point var5 = ((Component)var1).getLocationOnScreen();
  463.             var3 = var5.x;
  464.             var4 = var5.y;
  465.          } else {
  466.             Rectangle var2 = ((Component)var1).getBounds();
  467.             var3 = var2.x;
  468.             var4 = var2.y;
  469.          }
  470.  
  471.          var0.x += var3;
  472.          var0.y += var4;
  473.          if (!(var1 instanceof Window) && !(var1 instanceof Applet)) {
  474.             var1 = ((Component)var1).getParent();
  475.             if (var1 != null) {
  476.                continue;
  477.             }
  478.          }
  479.  
  480.          return;
  481.       }
  482.    }
  483.  
  484.    public static Rectangle convertRectangle(Component var0, Rectangle var1, Component var2) {
  485.       Point var3 = new Point(var1.x, var1.y);
  486.       var3 = convertPoint(var0, var3, var2);
  487.       return new Rectangle(var3.x, var3.y, var1.width, var1.height);
  488.    }
  489.  
  490.    static final void doPrivileged(Runnable var0) {
  491.       var0.run();
  492.    }
  493.  
  494.    public static Component findFocusOwner(Component var0) {
  495.       if (var0 instanceof Window) {
  496.          return ((Window)var0).getFocusOwner();
  497.       } else if (var0 instanceof JComponent && ((JComponent)var0).hasFocus()) {
  498.          return var0;
  499.       } else if (!(var0 instanceof Container)) {
  500.          return null;
  501.       } else {
  502.          int var1 = ((Container)var0).countComponents();
  503.  
  504.          for(int var2 = 0; var2 < var1; ++var2) {
  505.             Component var3 = findFocusOwner(((Container)var0).getComponent(var2));
  506.             if (var3 != null) {
  507.                return var3;
  508.             }
  509.          }
  510.  
  511.          return null;
  512.       }
  513.    }
  514.  
  515.    public static Accessible getAccessibleAt(Component var0, Point var1) {
  516.       if (var0 instanceof Accessible) {
  517.          Accessible var9 = (Accessible)var0;
  518.          if (var9 != null) {
  519.             AccessibleContext var11 = var9.getAccessibleContext();
  520.             if (var11 != null) {
  521.                int var14 = var11.getAccessibleChildrenCount();
  522.  
  523.                for(int var15 = 0; var15 < var14; ++var15) {
  524.                   var9 = var11.getAccessibleChild(var15);
  525.                   if (var9 != null) {
  526.                      var11 = var9.getAccessibleContext();
  527.                      if (var11 != null) {
  528.                         AccessibleComponent var12 = var11.getAccessibleComponent();
  529.                         if (var12 != null && var12.isShowing()) {
  530.                            Point var13 = var12.getLocation();
  531.                            Point var8 = new Point(var1.x - var13.x, var1.y - var13.y);
  532.                            if (var12.contains(var8)) {
  533.                               return var9;
  534.                            }
  535.                         }
  536.                      }
  537.                   }
  538.                }
  539.             }
  540.          }
  541.  
  542.          return (Accessible)var0;
  543.       } else {
  544.          Component var2 = var0;
  545.          if (!var0.contains(var1.x, var1.y)) {
  546.             var2 = null;
  547.          } else if (var0 instanceof Container) {
  548.             Container var3 = (Container)var0;
  549.             int var4 = var3.getComponentCount();
  550.  
  551.             for(int var5 = 0; var5 < var4; ++var5) {
  552.                Component var6 = var3.getComponent(var5);
  553.                if (var6 != null && var6.isShowing()) {
  554.                   Point var7 = var6.getLocation();
  555.                   if (var6.contains(var1.x - var7.x, var1.y - var7.y)) {
  556.                      var2 = var6;
  557.                   }
  558.                }
  559.             }
  560.          }
  561.  
  562.          return var2 instanceof Accessible ? (Accessible)var2 : null;
  563.       }
  564.    }
  565.  
  566.    public static Accessible getAccessibleChild(Component var0, int var1) {
  567.       if (var0 instanceof Container) {
  568.          Component[] var2 = ((Container)var0).getComponents();
  569.          int var3 = 0;
  570.  
  571.          for(int var4 = 0; var4 < var2.length; ++var4) {
  572.             if (var2[var4] instanceof Accessible) {
  573.                if (var3 == var1) {
  574.                   return (Accessible)var2[var4];
  575.                }
  576.  
  577.                ++var3;
  578.             }
  579.          }
  580.       }
  581.  
  582.       return null;
  583.    }
  584.  
  585.    public static int getAccessibleChildrenCount(Component var0) {
  586.       int var1 = 0;
  587.       if (var0 instanceof Container) {
  588.          Component[] var2 = ((Container)var0).getComponents();
  589.  
  590.          for(int var3 = 0; var3 < var2.length; ++var3) {
  591.             if (var2[var3] instanceof Accessible) {
  592.                ++var1;
  593.             }
  594.          }
  595.       }
  596.  
  597.       return var1;
  598.    }
  599.  
  600.    public static int getAccessibleIndexInParent(Component var0) {
  601.       int var1 = -1;
  602.       Container var2 = var0.getParent();
  603.       if (var2 != null && var2 instanceof Accessible) {
  604.          Component[] var3 = var2.getComponents();
  605.  
  606.          for(int var4 = 0; var4 < var3.length; ++var4) {
  607.             if (var3[var4] instanceof Accessible) {
  608.                ++var1;
  609.             }
  610.  
  611.             if (var0.equals(var3[var4])) {
  612.                return var1;
  613.             }
  614.          }
  615.       }
  616.  
  617.       return -1;
  618.    }
  619.  
  620.    public static AccessibleStateSet getAccessibleStateSet(Component var0) {
  621.       AccessibleStateSet var1 = new AccessibleStateSet();
  622.       if (var0.isEnabled()) {
  623.          var1.add(AccessibleState.ENABLED);
  624.       }
  625.  
  626.       if (var0.isFocusTraversable()) {
  627.          var1.add(AccessibleState.FOCUSABLE);
  628.       }
  629.  
  630.       if (var0.isVisible()) {
  631.          var1.add(AccessibleState.VISIBLE);
  632.       }
  633.  
  634.       if (var0.isShowing()) {
  635.          var1.add(AccessibleState.SHOWING);
  636.       }
  637.  
  638.       for(Container var2 = var0.getParent(); var2 != null; var2 = ((Component)var2).getParent()) {
  639.          if (var2 instanceof Window && ((Window)var2).getFocusOwner() == var0) {
  640.             var1.add(AccessibleState.FOCUSED);
  641.          }
  642.       }
  643.  
  644.       if (var0 instanceof Accessible) {
  645.          AccessibleContext var3 = ((Accessible)var0).getAccessibleContext();
  646.          if (var3 != null) {
  647.             Accessible var4 = var3.getAccessibleParent();
  648.             if (var4 != null) {
  649.                AccessibleContext var5 = var4.getAccessibleContext();
  650.                if (var5 != null) {
  651.                   AccessibleSelection var6 = var5.getAccessibleSelection();
  652.                   if (var6 != null) {
  653.                      var1.add(AccessibleState.SELECTABLE);
  654.                      int var7 = var3.getAccessibleIndexInParent();
  655.                      if (var7 >= 0 && var6.isAccessibleChildSelected(var7)) {
  656.                         var1.add(AccessibleState.SELECTED);
  657.                      }
  658.                   }
  659.                }
  660.             }
  661.          }
  662.       }
  663.  
  664.       if (var0 instanceof JComponent && ((JComponent)var0).isOpaque()) {
  665.          var1.add(AccessibleState.OPAQUE);
  666.       }
  667.  
  668.       return var1;
  669.    }
  670.  
  671.    public static Container getAncestorNamed(String var0, Component var1) {
  672.       if (var1 != null && var0 != null) {
  673.          Container var2;
  674.          for(var2 = var1.getParent(); var2 != null && !var0.equals(((Component)var2).getName()); var2 = ((Component)var2).getParent()) {
  675.          }
  676.  
  677.          return var2;
  678.       } else {
  679.          return null;
  680.       }
  681.    }
  682.  
  683.    public static Container getAncestorOfClass(Class var0, Component var1) {
  684.       if (var1 != null && var0 != null) {
  685.          Container var2;
  686.          for(var2 = var1.getParent(); var2 != null && !var0.isInstance(var2); var2 = ((Component)var2).getParent()) {
  687.          }
  688.  
  689.          return var2;
  690.       } else {
  691.          return null;
  692.       }
  693.    }
  694.  
  695.    private static CellRendererPane getCellRendererPane(Component var0, Container var1) {
  696.       Object var2 = var0.getParent();
  697.       if (var2 instanceof CellRendererPane) {
  698.          if (((Component)var2).getParent() != var1) {
  699.             var1.add((Component)var2);
  700.          }
  701.       } else {
  702.          var2 = new CellRendererPane();
  703.          ((Container)var2).add(var0);
  704.          var1.add((Component)var2);
  705.       }
  706.  
  707.       return (CellRendererPane)var2;
  708.    }
  709.  
  710.    public static Component getDeepestComponentAt(Component var0, int var1, int var2) {
  711.       if (!var0.contains(var1, var2)) {
  712.          return null;
  713.       } else {
  714.          if (var0 instanceof Container) {
  715.             Component[] var3 = ((Container)var0).getComponents();
  716.  
  717.             for(int var4 = 0; var4 < var3.length; ++var4) {
  718.                Component var5 = var3[var4];
  719.                if (var5 != null && var5.isVisible()) {
  720.                   Point var6 = var5.getLocation();
  721.                   if (var5 instanceof Container) {
  722.                      var5 = getDeepestComponentAt(var5, var1 - var6.x, var2 - var6.y);
  723.                   } else {
  724.                      var5 = var5.getComponentAt(var1 - var6.x, var2 - var6.y);
  725.                   }
  726.  
  727.                   if (var5 != null && var5.isVisible()) {
  728.                      return var5;
  729.                   }
  730.                }
  731.             }
  732.          }
  733.  
  734.          return var0;
  735.       }
  736.    }
  737.  
  738.    public static Rectangle getLocalBounds(Component var0) {
  739.       Rectangle var1 = new Rectangle(var0.getBounds());
  740.       var1.x = var1.y = 0;
  741.       return var1;
  742.    }
  743.  
  744.    static JDialog getRecycledModalDialog(Frame var0, String var1) {
  745.       Vector var2 = (Vector)appContextGet(dialogsKey);
  746.       if (var2 == null) {
  747.          var2 = new Vector();
  748.          appContextPut(dialogsKey, var2);
  749.       }
  750.  
  751.       Object var3 = null;
  752.       synchronized(var2){}
  753.  
  754.       try {
  755.          for(int var7 = 0; var7 < var2.size(); ++var7) {
  756.             JDialog var10 = (JDialog)var2.elementAt(var7);
  757.             if (((Component)var10).getParent() == var0) {
  758.                var2.removeElement(var10);
  759.                ((Dialog)var10).setTitle(var1);
  760.                JDialog var4 = var10;
  761.                return var4;
  762.             }
  763.          }
  764.  
  765.          JDialog var11 = new JDialog(var0, var1, true);
  766.          return var11;
  767.       } catch (Throwable var9) {
  768.          throw var9;
  769.       }
  770.    }
  771.  
  772.    public static Component getRoot(Component var0) {
  773.       Object var1 = null;
  774.  
  775.       for(Object var2 = var0; var2 != null; var2 = ((Component)var2).getParent()) {
  776.          if (var2 instanceof Window) {
  777.             return (Component)var2;
  778.          }
  779.  
  780.          if (var2 instanceof Applet) {
  781.             var1 = var2;
  782.          }
  783.       }
  784.  
  785.       return (Component)var1;
  786.    }
  787.  
  788.    public static JRootPane getRootPane(Component var0) {
  789.       if (var0 instanceof RootPaneContainer) {
  790.          return ((RootPaneContainer)var0).getRootPane();
  791.       } else {
  792.          while(var0 != null) {
  793.             if (var0 instanceof JRootPane) {
  794.                return (JRootPane)var0;
  795.             }
  796.  
  797.             var0 = ((Component)var0).getParent();
  798.          }
  799.  
  800.          return null;
  801.       }
  802.    }
  803.  
  804.    static Frame getSharedOwnerFrame() {
  805.       Object var0 = (Frame)appContextGet(sharedOwnerFrameKey);
  806.       if (var0 == null) {
  807.          var0 = new 2();
  808.          appContextPut(sharedOwnerFrameKey, var0);
  809.       }
  810.  
  811.       return (Frame)var0;
  812.    }
  813.  
  814.    private static Window getWindowAncestor(Component var0) {
  815.       for(Container var1 = var0.getParent(); var1 != null; var1 = ((Component)var1).getParent()) {
  816.          if (var1 instanceof Window) {
  817.             return (Window)var1;
  818.          }
  819.       }
  820.  
  821.       return null;
  822.    }
  823.  
  824.    public static void invokeAndWait(Runnable var0) throws InterruptedException, InvocationTargetException {
  825.       if (isEventDispatchThread()) {
  826.          throw new Error("Cannot call invokeAndWait from the event dispatcher thread");
  827.       } else {
  828.          1 var1 = new 1(var0);
  829.          Object var2 = null;
  830.          synchronized(var1){}
  831.  
  832.          try {
  833.             var6 = SystemEventQueueUtilities.postRunnable(var0, var1);
  834.             var1.wait();
  835.          } catch (Throwable var5) {
  836.             throw var5;
  837.          }
  838.  
  839.          if (var6 != null) {
  840.             throw new InvocationTargetException(var6);
  841.          }
  842.       }
  843.    }
  844.  
  845.    public static void invokeLater(Runnable var0) {
  846.       SystemEventQueueUtilities.postRunnable(var0, (Object)null);
  847.    }
  848.  
  849.    public static boolean isDescendingFrom(Component var0, Component var1) {
  850.       if (var0 == var1) {
  851.          return true;
  852.       } else {
  853.          for(Container var2 = var0.getParent(); var2 != null; var2 = ((Component)var2).getParent()) {
  854.             if (var2 == var1) {
  855.                return true;
  856.             }
  857.          }
  858.  
  859.          return false;
  860.       }
  861.    }
  862.  
  863.    public static boolean isEventDispatchThread() {
  864.       Thread var0 = Thread.currentThread();
  865.       if (eventDispatchThreadClass == null) {
  866.          Class var1 = var0.getClass();
  867.          if (var1.getName().indexOf("EventDispatchThread") < 0 && var1.getName().indexOf("JMEventQueue") < 0) {
  868.             return false;
  869.          } else {
  870.             eventDispatchThreadClass = var1;
  871.             return true;
  872.          }
  873.       } else {
  874.          return eventDispatchThreadClass.isInstance(var0);
  875.       }
  876.    }
  877.  
  878.    public static boolean isLeftMouseButton(MouseEvent var0) {
  879.       if (is1dot2) {
  880.          return (((InputEvent)var0).getModifiers() & 16) != 0;
  881.       } else {
  882.          return (((InputEvent)var0).getModifiers() & 16) != 0 || (((InputEvent)var0).getModifiers() & 12) == 0;
  883.       }
  884.    }
  885.  
  886.    static boolean isLeftToRight(Component var0) {
  887.       return true;
  888.    }
  889.  
  890.    public static boolean isMiddleMouseButton(MouseEvent var0) {
  891.       return (((InputEvent)var0).getModifiers() & 8) == 8;
  892.    }
  893.  
  894.    public static final boolean isRectangleContainingRectangle(Rectangle var0, Rectangle var1) {
  895.       return var1.x >= var0.x && var1.x + var1.width <= var0.x + var0.width && var1.y >= var0.y && var1.y + var1.height <= var0.y + var0.height;
  896.    }
  897.  
  898.    public static boolean isRightMouseButton(MouseEvent var0) {
  899.       return (((InputEvent)var0).getModifiers() & 4) == 4;
  900.    }
  901.  
  902.    public static String layoutCompoundLabel(FontMetrics var0, String var1, Icon var2, int var3, int var4, int var5, int var6, Rectangle var7, Rectangle var8, Rectangle var9, int var10) {
  903.       return layoutCompoundLabelImpl((JComponent)null, var0, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10);
  904.    }
  905.  
  906.    public static String layoutCompoundLabel(JComponent var0, FontMetrics var1, String var2, Icon var3, int var4, int var5, int var6, int var7, Rectangle var8, Rectangle var9, Rectangle var10, int var11) {
  907.       boolean var12 = true;
  908.       int var13 = var5;
  909.       int var14 = var7;
  910.       switch (var5) {
  911.          case 10:
  912.             var13 = var12 ? 2 : 4;
  913.             break;
  914.          case 11:
  915.             var13 = var12 ? 4 : 2;
  916.       }
  917.  
  918.       switch (var7) {
  919.          case 10:
  920.             var14 = var12 ? 2 : 4;
  921.             break;
  922.          case 11:
  923.             var14 = var12 ? 4 : 2;
  924.       }
  925.  
  926.       return layoutCompoundLabelImpl(var0, var1, var2, var3, var4, var13, var6, var14, var8, var9, var10, var11);
  927.    }
  928.  
  929.    private static String layoutCompoundLabelImpl(JComponent var0, FontMetrics var1, String var2, Icon var3, int var4, int var5, int var6, int var7, Rectangle var8, Rectangle var9, Rectangle var10, int var11) {
  930.       if (var3 != null) {
  931.          var9.width = var3.getIconWidth();
  932.          var9.height = var3.getIconHeight();
  933.       } else {
  934.          var9.width = var9.height = 0;
  935.       }
  936.  
  937.       boolean var12 = var2 == null || var2.equals("");
  938.       View var13 = null;
  939.       if (var12) {
  940.          var10.width = var10.height = 0;
  941.          var2 = "";
  942.       } else {
  943.          var13 = var0 != null ? (View)var0.getClientProperty("html") : null;
  944.          if (var13 != null) {
  945.             var10.width = (int)var13.getPreferredSpan(0);
  946.             var10.height = (int)var13.getPreferredSpan(1);
  947.          } else {
  948.             var10.width = computeStringWidth(var1, var2);
  949.             var10.height = var1.getHeight();
  950.          }
  951.       }
  952.  
  953.       int var14 = !var12 && var3 != null ? var11 : 0;
  954.       if (!var12) {
  955.          int var15;
  956.          if (var7 == 0) {
  957.             var15 = var8.width;
  958.          } else {
  959.             var15 = var8.width - (var9.width + var14);
  960.          }
  961.  
  962.          if (var10.width > var15) {
  963.             if (var13 != null) {
  964.                var10.width = var15;
  965.             } else {
  966.                String var16 = "...";
  967.                int var17 = computeStringWidth(var1, var16);
  968.  
  969.                int var18;
  970.                for(var18 = 0; var18 < var2.length(); ++var18) {
  971.                   var17 += var1.charWidth(var2.charAt(var18));
  972.                   if (var17 > var15) {
  973.                      break;
  974.                   }
  975.                }
  976.  
  977.                var2 = var2.substring(0, var18) + var16;
  978.                var10.width = computeStringWidth(var1, var2);
  979.             }
  980.          }
  981.       }
  982.  
  983.       if (var6 == 1) {
  984.          if (var7 != 0) {
  985.             var10.y = 0;
  986.          } else {
  987.             var10.y = -(var10.height + var14);
  988.          }
  989.       } else if (var6 == 0) {
  990.          var10.y = var9.height / 2 - var10.height / 2;
  991.       } else if (var7 != 0) {
  992.          var10.y = var9.height - var10.height;
  993.       } else {
  994.          var10.y = var9.height + var14;
  995.       }
  996.  
  997.       if (var7 == 2) {
  998.          var10.x = -(var10.width + var14);
  999.       } else if (var7 == 0) {
  1000.          var10.x = var9.width / 2 - var10.width / 2;
  1001.       } else {
  1002.          var10.x = var9.width + var14;
  1003.       }
  1004.  
  1005.       int var21 = Math.min(var9.x, var10.x);
  1006.       int var22 = Math.max(var9.x + var9.width, var10.x + var10.width) - var21;
  1007.       int var23 = Math.min(var9.y, var10.y);
  1008.       int var24 = Math.max(var9.y + var9.height, var10.y + var10.height) - var23;
  1009.       int var20;
  1010.       if (var4 == 1) {
  1011.          var20 = var8.y - var23;
  1012.       } else if (var4 == 0) {
  1013.          var20 = var8.y + var8.height / 2 - (var23 + var24 / 2);
  1014.       } else {
  1015.          var20 = var8.y + var8.height - (var23 + var24);
  1016.       }
  1017.  
  1018.       int var19;
  1019.       if (var5 == 2) {
  1020.          var19 = var8.x - var21;
  1021.       } else if (var5 == 4) {
  1022.          var19 = var8.x + var8.width - (var21 + var22);
  1023.       } else {
  1024.          var19 = var8.x + var8.width / 2 - (var21 + var22 / 2);
  1025.       }
  1026.  
  1027.       var10.x += var19;
  1028.       var10.y += var20;
  1029.       var9.x += var19;
  1030.       var9.y += var20;
  1031.       return var2;
  1032.    }
  1033.  
  1034.    static Class loadSystemClass(String var0) throws ClassNotFoundException {
  1035.       return Class.forName(var0);
  1036.    }
  1037.  
  1038.    public static void paintComponent(Graphics var0, Component var1, Container var2, int var3, int var4, int var5, int var6) {
  1039.       getCellRendererPane(var1, var2).paintComponent(var0, var1, var2, var3, var4, var5, var6, false);
  1040.    }
  1041.  
  1042.    public static void paintComponent(Graphics var0, Component var1, Container var2, Rectangle var3) {
  1043.       paintComponent(var0, var1, var2, var3.x, var3.y, var3.width, var3.height);
  1044.    }
  1045.  
  1046.    static void recycleModalDialog(JDialog var0) {
  1047.       Vector var1 = (Vector)appContextGet(dialogsKey);
  1048.       synchronized(var1){}
  1049.  
  1050.       try {
  1051.          var0.getContentPane().removeAll();
  1052.          var1.addElement(var0);
  1053.       } catch (Throwable var4) {
  1054.          throw var4;
  1055.       }
  1056.  
  1057.    }
  1058.  
  1059.    public static void updateComponentTreeUI(Component var0) {
  1060.       updateComponentTreeUI0(var0);
  1061.       var0.invalidate();
  1062.       var0.validate();
  1063.       var0.repaint();
  1064.    }
  1065.  
  1066.    private static void updateComponentTreeUI0(Component var0) {
  1067.       if (var0 instanceof JComponent) {
  1068.          ((JComponent)var0).updateUI();
  1069.       }
  1070.  
  1071.       Component[] var1 = null;
  1072.       if (var0 instanceof JMenu) {
  1073.          var1 = ((JMenu)var0).getMenuComponents();
  1074.       } else if (var0 instanceof Container) {
  1075.          var1 = ((Container)var0).getComponents();
  1076.       }
  1077.  
  1078.       if (var1 != null) {
  1079.          for(int var2 = 0; var2 < var1.length; ++var2) {
  1080.             updateComponentTreeUI0(var1[var2]);
  1081.          }
  1082.       }
  1083.  
  1084.    }
  1085.  
  1086.    public static Window windowForComponent(Component var0) {
  1087.       for(Container var1 = var0.getParent(); var1 != null; var1 = ((Component)var1).getParent()) {
  1088.          if (var1 instanceof Window) {
  1089.             return (Window)var1;
  1090.          }
  1091.       }
  1092.  
  1093.       return null;
  1094.    }
  1095. }
  1096.